function res = viewParamDependance(obj, device, node, start, stop, varargin)
%VIEWPARAMDEPENDANCE Summary of this function goes here
%   Detailed explanation goes here
    p=inputParser; p.KeepUnmatched = true;
    % sweep control
    p.addRequired('device', @(x) ismember(x, obj.deviceSerials));
    p.addRequired('node', @(x) isa(x, 'ziSweepNode'));
    p.addRequired('start', @isnumeric);
    p.addRequired('stop', @isnumeric);
    p.addParameter('npoint', 100, @(x) x>0);
    p.addParameter('sweep_mode', 0, @ziEnumSweepMode.test);
    p.addParameter('isLog', false, @islogical);
    % sweep filter
    p.addParameter('bandwidthcontrol', ziEnumSweepBWMode.Mannual, @ziEnumSweepBWMode.test);
    p.addParameter('order', 4, @(x) ismember(x, 1:8));     % fixed & auto mode
    p.addParameter('bandwidth', 100, @(x) x>0);            % fixed mode
    p.addParameter('maxbandwidth', 1.25e6, @(x) x>0);      % auto mode, Maximal bandwidth used in auto bandwidth mode in [Hz]. The default is 1.25MHz.
    p.addParameter('bandwidthoverlap', false, @islogical); % auto mode, Sets the bandwidth overlap mode (default 0).  0 = Disable; 1 = Enable
    p.addParameter('omegasuppression', 40, @(x) x>0);      % auto mode  Damping in [dB] of omega and 2omega components. Default is 40dB in favor of sweep speed. Use higher value for strong offset values or 3omega measurement methods.
    % sweep settling
    p.addParameter('settling_time', 0);            % double  Settling time before measurement is performed, in [s]
    p.addParameter('settling_tc', 0);              % double  Settling precision: 5 ~ low precision; 15 ~ medium precision; 50 ~ high precision
    p.addParameter('settling_inaccuracy', 10e-3);  % double     [1e-13, 0.1]
    % sweep averaging
    p.addParameter('averaging_tc', 0);     % double  Min averaging time [tc]: 0 = no averaging (see also time!); 5 ~ low precision; 15 ~ medium precision; 50 ~ high precision;
    p.addParameter('averaging_sample', 0); % int     Min samples to average: 1 = no averaging (if averaging/tc = 0);
    p.addParameter('averaging_time', 0);   % double  Min averaging time [s]
    % sweep options
    p.addParameter('phaseunwrap', 0); % bool    Enable unwrapping of slowly changing phase evolutions around the +/-180 degree boundary.
    p.addParameter('sincfilter', 0);  % bool    Enables the sinc filter if the sweep frequency s below 50 Hz. This will improve the sweep speed at low frequencies as omega components do not need to be suppressed by the normal low pass filter.
    p.addParameter('awgcontrol', 0);  % bool    Enable AWG control for sweeper. If enabled the sweeper will automatically start the AWG and records the sweep sample based on the even index in hwtrigger.
    
    p.addParameter('name',     'SWEEPER', @ischar);    
    p.parse(device, node, start, stop, varargin{:});
    
    %%
    swpr = obj.sweeperModule(p.Results.name);
    
    swpr.initialize();
    swpr.setSweepParameter(p.Results.device, p.Results.node, p.Results.start, p.Results.stop, ...
                        'npoint',     p.Results.npoint, ...
                        'sweep_mode', p.Results.sweep_mode, ...
                        'isLog',      p.Results.isLog);
    swpr.setFilter('bandwidthcontrol', p.Results.bandwidthcontrol, ...
                   'order',            p.Results.order, ...
                   'bandwidth',        p.Results.bandwidth, ...
                   'maxbandwidth',     p.Results.maxbandwidth, ...
                   'bandwidthoverlap', p.Results.bandwidthoverlap, ...
                   'omegasuppression', p.Results.omegasuppression);
    swpr.setSettling('settling_time',       p.Results.settling_time, ...
                     'settling_tc',         p.Results.settling_tc, ...
                     'settling_inaccuracy', p.Results.settling_inaccuracy);
    swpr.setStatistics('averaging_tc',     p.Results.averaging_tc, ...
                       'averaging_sample', p.Results.averaging_sample, ...
                       'averaging_time',   p.Results.averaging_time);
    swpr.setOption('phaseunwrap', p.Results.phaseunwrap, ...
                   'sincfilter',  p.Results.sincfilter, ...
                   'awgcontrol',  p.Results.awgcontrol);

    if ~isempty(obj.demodSignalNodes)
        for k = 1:size(obj.demodSignalNodes, 1)
            swpr.subscribe(obj.demodSignalNodes{k, :});
        end
    else
        error('No node subscribed.');
    end
    
    res = swpr.run();
end

